using System;
using System.Threading;
using System.Threading.Tasks;

namespace K9Nano.Application.Features
{
    /// <summary>
    /// Defines a store to get a feature's value.
    /// </summary>
    public interface IFeatureValueStore
    {
        Task<string> GetValueOrNullAsync(Guid tenantId, Feature feature, CancellationToken cancellation = default);
        Task<string> GetEditionValueOrNullAsync(int editionId, string featureName, CancellationToken cancellation = default);
        Task SetEditionFeatureValueAsync(int editionId, string featureName, string value, CancellationToken cancellation = default);
    }
}